package armazenamento;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class GerenciadorDados {

	//Metodo para escrever em uma arquivo
	public static void escreveArquivo(String conteudo, String arquivo, boolean adicionar){

		try {
			FileWriter fw = new FileWriter(arquivo, adicionar);
			
			fw.write(conteudo + "\n");
			fw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
	
	public static void leArquivo(String arquivo) {
		
		String linha,saida="";

		
		try {
			BufferedReader br = new BufferedReader(new FileReader(arquivo));

			while( (linha = br.readLine()) != null ) {
				saida += linha.replaceAll(",", " - ") + "\n";
			}
			
			br.close();
			
			System.out.println(saida);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	// Lista os empréstimos realizados por um usuário
	public static String procuraEmprestimos(int matriculaUsuario, String arquivoEmprestimos) {
		
		String linha = "";
		String emprestimos = "";
		
		try {
			BufferedReader br = new BufferedReader(new FileReader(arquivoEmprestimos));
			
			while( (linha = br.readLine()) != null ) {
				if ( linha.contains(Integer.toString(matriculaUsuario) + ",") ) {
					emprestimos += linha + "\n";
				}
			}

			br.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return emprestimos;
	}
	
	// Encontra um padrão dentro do arquivo de usuários
	public static boolean encontraPadraoTexto(String padrao, String arquivo) {
		
		boolean encontrou = false;
		String linha="";

		try {
			BufferedReader br = new BufferedReader(new FileReader(arquivo));

			while( (linha = br.readLine()) != null ) {

				if (linha.contains(padrao + ",")) {
					encontrou = true;
				}
			}
			
			br.close();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return encontrou;

	}
	
	// Encontra um padrão dentro do arquivo de usuários
	public static String retornaPadraoEncontrada(String padrao, String arquivo) {
		
		String encontrou = "";
		String linha="";

		try {
			BufferedReader br = new BufferedReader(new FileReader(arquivo));

			while( (linha = br.readLine()) != null ) {

				if (linha.contains(padrao + ",")) {
					encontrou = linha;
					break;
				}
			}
			
			br.close();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return encontrou;

	}
	
	// Remove uma linha com um determinado padrão de dentro de um arquivo
	public static void removeLinha(String padraoTexto, String arquivo){
		
		String linha = "";
		String conteudoFinal = "";
		

		try {
			BufferedReader br = new BufferedReader( new FileReader(arquivo));
			
			while ( (linha = br.readLine()) != null ) {

				if ( linha.contains("," + padraoTexto + ",") ) {
					linha = "";//linha.replaceAll("," + padraoTexto + ",", "MERDA").trim());
				}

				conteudoFinal += linha + "\n";

			}
			
			escreveArquivo("", arquivo, false);
			escreveArquivo(conteudoFinal, arquivo, false);

			br.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	// Calcula a próxima Matrícula Disponível
	public static int calculaProximaMatricula(String arquivoUsuarios) {

		String linha = "";
		String ultima = "";
		int proximaMatricula = 0;

		try {
			BufferedReader br = new BufferedReader(new FileReader(arquivoUsuarios));

			while( (linha = br.readLine()) != null ){
				ultima = linha; 
			}

			br.close();

			proximaMatricula = Integer.parseInt(ultima.split(",")[0])+1;

		}catch (Exception e) {
			e.printStackTrace();
		}

		return proximaMatricula;

	}

}